/*
 * @Description: 
 * @Author: houcw
 * @Date: 2024-01-26 11:06:32
 * @LastEditTime: 2024-01-26 11:10:32
 * @LastEditors: houcw
 * @Reference: 
 */
// 创建一个封装响应的中间件
function wrapResponse(req, res, next) {
    // 保存原始的json方法
    const _json = res.json;
    // 覆盖res.json方法实现自定义逻辑
    res.json = function(data) {
      // 对data进行统一处理，例如添加状态码、时间戳等
      let responseData = { 
        code: 200, // 默认成功状态码，可以根据实际情况调整
        message: 'Success', // 默认成功消息，也可以根据返回结果动态设置
        data: data,
        timestamp: new Date().toISOString()
      };
  
      // 如果data是一个Error对象或者包含错误信息，则调整响应状态码和消息
      if (data instanceof Error || (data && data.error)) {
        responseData.code = data.status || 500;
        responseData.message = data.message || 'Server Error';
        delete responseData.data; // 如果是错误，不返回具体数据
      }
  
      // 最后调用原始的json方法发送响应
      _json.call(res, responseData);
    };
  
    // 调用next()以继续执行其他中间件和路由处理程序
    next();
  }

  module.exports = wrapResponse